//
// Created by shenbin on 2022/4/17.
// https://leetcode-cn.com/problems/plus-one/submissions/
//

#ifndef ALGORITHM_TRAINNING_W01_H01_LC66_H
#define ALGORITHM_TRAINNING_W01_H01_LC66_H

#include <vector>

using namespace std;

class LeetCode66 {
public:
    vector<int> plusOne(vector<int> &digits) {
        bool needPlus = true;
        // 倒序处理，先处理最后一位
        for (int i = digits.size() - 1; i >= 0; i--) {
            // 如果为9且需要加1 那么将元素置为零，并且还需要继续加；
            if (needPlus && digits[i] == 9) {
                digits[i] = 0;
            } else if (needPlus) {
                digits[i] = digits[i] + 1;
                needPlus = false;
            }
        }
        // 如果碰到最高位需要进位，那么在数组的最前端追加1；
        if (needPlus) {
            digits.insert(digits.begin(), 1);
        }
        return digits;
    }
};


#endif //ALGORITHM_TRAINNING_W01_H01_LC66_H
